package demo.huodongbaoming.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import java.util.HashMap;
import java.util.Map;

/**
 * 负载均衡服务类
 * 使用带负载均衡的RestTemplate调用其他服务
 */
@Service
public class LoadBalancerService {

    // 注入带有负载均衡功能的RestTemplate
    @Autowired
    private RestTemplate restTemplate;
    
    // 注入普通的RestTemplate
    @Autowired
    @Qualifier("normalRestTemplate")
    private RestTemplate normalRestTemplate;
    
    /**
     * 使用负载均衡的RestTemplate调用服务
     * 直接使用服务名称作为URL的一部分
     * @param serviceId 服务ID
     * @return 服务响应
     */
    public Map<String, Object> callServiceWithLoadBalancer(String serviceId, String path) {
        try {
            // 使用服务ID代替具体的主机名和端口
            String url = "http://" + serviceId + path;
            return restTemplate.getForObject(url, Map.class);
        } catch (Exception e) {
            Map<String, Object> error = new HashMap<>();
            error.put("error", "调用服务失败: " + e.getMessage());
            error.put("service", serviceId);
            error.put("path", path);
            return error;
        }
    }
    
    /**
     * 使用普通RestTemplate调用具体URL
     * @param url 完整URL
     * @return 服务响应
     */
    public Map<String, Object> callServiceWithUrl(String url) {
        try {
            return normalRestTemplate.getForObject(url, Map.class);
        } catch (Exception e) {
            Map<String, Object> error = new HashMap<>();
            error.put("error", "调用URL失败: " + e.getMessage());
            error.put("url", url);
            return error;
        }
    }
} 